/**
 * 给定N个区间[L,R]，求这些区间两两相交的对数。
 * 首先离散化，然后按(左端点,右端点)排序。
 * 对第i个区间[Li, Ri]：
 *    令tmp = Li到无穷大求和
 *    tmp就是右端点在Li右边的区间数量，自然是相交的数量，要累加
 *    再令Ri位置加一即可
 */
#include <bits/stdc++.h>
using namespace std;

#include <bits/extc++.h>

using llt = long long;
using vi = vector<int>;
using pii = pair<int, int>;
using vpii = vector<pii>;
using vll = vector<llt>;

template<typename T>
void input(vector<T> & a, int n){
    a.assign(n + 1, {});
    for(int i=1;i<=n;++i) cin >> a[i];
    return;
}

template<typename T>
istream & operator >> (istream & is, vector<T> & v){
    for(auto & i : v) is >> i;
    return is;
}


struct FenwickTree{ // 树状数组

using value_type = long long int;
using vec_type = vector<value_type>;

int n;
vec_type c;

FenwickTree() = default;

static int lowbit(int x){return x & -x;}

void init(int nn){this->c.assign((this->n=nn) + 1, 0);}

void modify(int pos, value_type delta){
    for(int i=pos;i<=this->n;i+=lowbit(i)) this->c[i] += delta;
}

value_type query(int pos)const{
    value_type ans = 0;
    for(int i=pos;i;i-=lowbit(i)) ans += this->c[i];
    return ans;
}

value_type query(int s, int e)const{return this->query(e) - this->query(s - 1);}

}Bt;

int N;
vector<pair<double, double>> A;
vector<double> W;

void work(){
    cin >> N;
    A.assign(N, {});
    W.assign(N + N + 1, {});
    W[0] = -1;  
    int k = 0;  
    for(auto & p : A){
        cin >> p.first >> p.second;
        W[++k] = p.first;
        W[++k] = p.second;
    }
    sort(A.begin(), A.end());
    sort(W.begin(), W.end());
    W.erase(unique(W.begin(), W.end()), W.end());
    Bt.init(N + N + 2);
    
    llt ans = 0;
    for(const auto & p : A){
        int c = lower_bound(W.begin(), W.end(), p.first) - W.begin();
        auto tmp = Bt.query(c, N + N + 2);
        ans += tmp;

        int r = lower_bound(W.begin(), W.end(), p.second) - W.begin();
        Bt.modify(r, 1);
    }
    cout << ans << endl;
    return; 
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int nofkase = 1;
    // cin >> nofkase;

    while(nofkase--) work();
    return 0;
}